import puppeteer from 'puppeteer';
import * as fs from "node:fs";

function goofish(keyword, doLogin = false) {
    return new Promise(async (resolve, reject) => {
        // 1. 启动浏览器
        const browser = await puppeteer.launch({
            headless: false, // 设为 true 表示无头模式（不显示浏览器界面）
            defaultViewport: null,
            userDataDir: './browser-data',
        });

        const pages = await browser.pages();
        let page;
        if (pages.length > 0) {
            page = pages[0];
        } else {
            page = await browser.newPage();
        }

        // 监听响应
        page.on('response', async (response) => {
            const url = response.url();
            // 可加过滤条件，比如只看包含 /api/ 的链接
            if (url.includes('/mtop.taobao.idlemtopsearch.pc.search/')) {
                try {
                    const data = await response.json();
                    resolve(data);
                } catch (err) {
                    reject(err);
                }
            }
        });

        // 3. 跳转到目标网址
        await page.goto('https://www.goofish.com/'); // 替换为实际登录页面URL
        // 4. 等待“登录”按钮加载
        await page.waitForSelector('input.search-input--WY2l9QD3');

        if (doLogin) {
            // 5. 点击“登录”按钮
            await page.click('a.item--m9jSTUup');
            await page.waitForSelector('iframe#alibaba-login-box');
            const frameHandle = await page.$('iframe#alibaba-login-box');
            // 获取 iframe 的 Frame 对象
            const frame = await frameHandle.contentFrame();
            await frame.waitForSelector('a.password-login-tab-item');
            // 切换“密码登录”
            await frame.click('a.password-login-tab-item');
            await frame.waitForSelector('#fm-login-id');
            await frame.type('#fm-login-id', 'your_username');
            await frame.type('#fm-login-password', 'your_username');
            await frame.click('button.password-login');
            // 假设你手动或自动完成了登录
            const cookies = await page.cookies();
            fs.writeFileSync('./cookies.json', JSON.stringify(cookies, null, 2));
        }

        await page.type('input.search-input--WY2l9QD3', keyword);

        await page.click('button.search-icon--bewLHteU');

    })
}

goofish('pentax').then(r => {
    if (Array.isArray(r.data.resultList)) {
        r.data.resultList.map(({data: {item: {main}}}) => {
            console.log(JSON.stringify(main.exContent.picUrl));
        });
    }
});